# 导包
from time import sleep

from selenium import webdriver

# 获取浏览器驱动对象
driver = webdriver.Chrome()
## 最大化浏览器
driver.maximize_window()
## 隐式等待
driver.implicitly_wait(30)

# 打开url
driver.get("https://www.runoob.com/try/try.php?filename=tryjs_alert")
"""
    需求：
        1. 点击 alert按钮
        2. 输入用户名 admin
    
    警告框：
        * 为什么要处理警告框？
            如果页面有弹出框，不处理，接下来的将不生效。
            
        * 对话框类型
            1. alert # 警告框
            2. confirm # 确认框
            3. prompt # 提示框
        * 如何处理
            以上三种对话框，处理方法都一样。
            步骤：
                1. 切换到对话框
                    方法：driver.switch_to.alert
                2. 处理对话框
                    alert.text # 获取文本
                    alert.accept # 同意
                    alert.dismiss # 取消
            
            提示：无论以上那个对话框，都可以使用取消、同意，因为调用的后台的事件，跟页面显示的按钮数量无关。
    
    注意：
        1. driver.switch_to.alert 方法适合以上三种类型对话框，调用时没有括号
        2. 获取文本的方法，调用时没有括号 如：alert.text
        3. 在项目中不是所有的小窗口都是以上三种对话框
"""
# 定位 alert按钮 并 点击
iframe = driver.find_element_by_css_selector('#iframeResult')
driver.switch_to.frame(iframe) # 由于元素在iframe内所以这里要切换进去
driver.find_element_by_css_selector('[value="显示警告框"]').click()
sleep(2)

# 核心操作在这里(重要、重要、重要)
# 切换 到alert
# 默认返回的alert对象
at = driver.switch_to.alert
# 处理 对话框
# 同意
# at.accept()

# 获取文本
print("警告信息：", at.text)

# 取消
at.dismiss()


# 注意：页面上有警告框、提示框、确认框的话只要不去处理那么接下来的操作讲无法进行
driver.switch_to.default_content()


# 定位 用户名 输入admin
driver.find_element_by_css_selector('[type="search"]').send_keys("admin")

# 暂停3秒
sleep(3)

# 关闭浏览器驱动对象
driver.close()
